import doctest
import importlib
import glob


TARGET_GLOB = "sentence*.py"
TEST_FILE = "sentence.rst"
TEST_MSG = "{0:16} {1.attempted:2} tests, {1.failed:2} failed - {2}"


def main(argv):
    verbose = "-v" in argv
    for module_file_name in sorted(glob.glob(TARGET_GLOB)):
        module_name = module_file_name.replace(".py", "")
        module = importlib.import_module(module_name)
        try:
            cls = getattr(module, "Sentence")
        except AttributeError:
            continue
        test(cls, verbose)


def test(cls, verbose=False):

    res = doctest.testfile(
        TEST_FILE,
        globs={"Sentence": cls},
        verbose=verbose,
        optionflags=doctest.REPORT_ONLY_FIRST_FAILURE,
    )
    tag = "FAIL" if res.failed else "OK"
    print(TEST_MSG.format(cls.__module__, res, tag))


if __name__ == "__main__":
    import sys

    print("start ...")
    main(sys.argv)
